package com.example.aggregatedemo.arrary;

import com.example.aggregatedemo.arrary.a05mySet.Student_Tree;
import com.example.aggregatedemo.arrary.a05mySet.Student_Tree_2;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

@SpringBootTest
public class TreeSetTest_1 {

    @Test
    void DemoTest1() {

        //创建对象
        TreeSet<Integer> ts = new TreeSet<>();
        ts.add(4);
        ts.add(5);
        ts.add(2);
        ts.add(1);
        ts.add(3);
        System.out.println(ts);

        Iterator<Integer> it = ts.iterator();
        while (it.hasNext()) {
            int i = it.next();
            System.out.println(i);
        }

        for (Integer t : ts) {
            System.out.println(t);
        }

        ts.forEach(s -> System.out.println(s));
    }

    @Test
    void DemoTest2() {
        Student_Tree s1=new Student_Tree("z113",21);
        Student_Tree s2=new Student_Tree("z113",23);
        Student_Tree s3=new Student_Tree("w5",24);
        Student_Tree s4=new Student_Tree("z6",21);

        TreeSet<Student_Tree> ts = new TreeSet<>();
        System.out.println(ts.add(s1));
        System.out.println(ts.add(s2));
        System.out.println(ts.add(s3));
        System.out.println(ts.add(s4));

        System.out.println(ts);

    }

    //排序测试
    @Test
    void DemoTest3() {

        //1 创建
        //o1 表示当前要添加的元素
        //o2 表示已经在红黑树存在的元素
        //返回值规则跟之前是一样的
        TreeSet<String> ts = new TreeSet<>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                //按照长度排序
                int i=o1.length()-o2.length();
                //如果长度一样，按照首字母排序
                i=i==0?o1.compareTo(o2):i;
                return i;
            }
        });
        //lamba写法
//        TreeSet<String> ts = new TreeSet<>((o1, o2)-> {
//                //按照长度排序
//                int i=o1.length()-o2.length();
//                //如果长度一样，按照首字母排序
//                i=i==0?o1.compareTo(o2):i;
//                return i;
//        });

//        TreeSet<String> ts = new TreeSet<>();
        ts.add("c");
        ts.add("ab");
        ts.add("df");
        ts.add("ccc");

        System.out.println(ts);
    }


    //排序练习
    @Test
    void DemoTest4() {
        Student_Tree_2 s1=new Student_Tree_2("zhangsan",23,24,25,21);
        Student_Tree_2 s2=new Student_Tree_2("lisi",15,87,32,54);
        Student_Tree_2 s3=new Student_Tree_2("zhangsan",15,87,32,54);
        Student_Tree_2 s4=new Student_Tree_2("wangwu",213,24,25,21);
        Student_Tree_2 s5=new Student_Tree_2("wangwu",50,66,90,21);

        TreeSet<Student_Tree_2> ts=new TreeSet<>();
        ts.add(s1);
        ts.add(s2);
        ts.add(s3);
        ts.add(s4);
        ts.add(s5);

        for (Student_Tree_2 t : ts) {
            System.out.println(t);
        }

    }

}
